package org.example.warehouse.service;


import org.example.core.to.mq.OrderTo;
import org.example.core.to.mq.StockDetailTo;
import org.example.core.utils.PageUtils;
import org.example.core.utils.R;
import org.example.warehouse.bo.WareSkuBO;
import org.example.warehouse.dto.WareSkuDto;
import org.example.warehouse.entity.WareSkuEntity;
import org.example.warehouse.vo.LockedStockVo;

import java.util.List;
import java.util.Map;

/**
 * @author xiaojie_cc
 * @version 1.0
 */
public interface WareSkuService{

    // 锁定库存
    void lockStock(LockedStockVo vo);

    // 自动解锁库存
    void autoUnLockedStock(StockDetailTo to);

    // 主动解锁库存
    void activeUnLockedStock(OrderTo order);

    // 添加库存
    int addWareSkus(List<WareSkuEntity> wareSku);

    // 判断是否有库存
    Boolean queryStockBySkuId(Long skuId);

    // 查询sku集合是否有库存
    Map<Long, Integer> querySkusIsStocks(List<Long> skuIds);

    // 查询单个sku的库存数
    Integer queryStock(Long skuId);

    Map<Long, Integer> getSeckillSkuStock(List<Long> skuIds);

    PageUtils list(WareSkuDto dto);

    int update(WareSkuBO bo);
}

